/*
 * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

import java.io.File;
import java.util.regex.Pattern;

/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/wasmTests")
@TestDataPath("$PROJECT_ROOT")
public class LLReversedWasmJsDiagnosticsFe10TestGenerated extends AbstractLLReversedWasmJsDiagnosticsTest {
  @Test
  public void testAllFilesPresentInWasmTests() {
    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
  }

  @Test
  @TestMetadata("qualifiedNameIsAllowed.kt")
  public void testQualifiedNameIsAllowed() {
    runTest("compiler/testData/diagnostics/wasmTests/qualifiedNameIsAllowed.kt");
  }

  @Test
  @TestMetadata("qualifiedNameIsProhibited.kt")
  public void testQualifiedNameIsProhibited() {
    runTest("compiler/testData/diagnostics/wasmTests/qualifiedNameIsProhibited.kt");
  }

  @Nested
  @TestMetadata("compiler/testData/diagnostics/wasmTests/jsInterop")
  @TestDataPath("$PROJECT_ROOT")
  public class JsInterop {
    @Test
    public void testAllFilesPresentInJsInterop() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/jsInterop"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
    }

    @Test
    @TestMetadata("anonymousInitializer.kt")
    public void testAnonymousInitializer() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/anonymousInitializer.kt");
    }

    @Test
    @TestMetadata("associatedObjects.kt")
    public void testAssociatedObjects() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/associatedObjects.kt");
    }

    @Test
    @TestMetadata("body.kt")
    public void testBody() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/body.kt");
    }

    @Test
    @TestMetadata("complexCasesWithJsInteropTypes.kt")
    public void testComplexCasesWithJsInteropTypes() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/complexCasesWithJsInteropTypes.kt");
    }

    @Test
    @TestMetadata("contextParameters.kt")
    public void testContextParameters() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/contextParameters.kt");
    }

    @Test
    @TestMetadata("correctJsInteropTypes.kt")
    public void testCorrectJsInteropTypes() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/correctJsInteropTypes.kt");
    }

    @Test
    @TestMetadata("definedExternally.kt")
    public void testDefinedExternally() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/definedExternally.kt");
    }

    @Test
    @TestMetadata("delegatedConstructorCall.kt")
    public void testDelegatedConstructorCall() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/delegatedConstructorCall.kt");
    }

    @Test
    @TestMetadata("delegation.kt")
    public void testDelegation() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/delegation.kt");
    }

    @Test
    @TestMetadata("dynamicUnsupported.kt")
    public void testDynamicUnsupported() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.kt");
    }

    @Test
    @TestMetadata("external.kt")
    public void testExternal() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/external.kt");
    }

    @Test
    @TestMetadata("externalInterfaceNested.kt")
    public void testExternalInterfaceNested() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/externalInterfaceNested.kt");
    }

    @Test
    @TestMetadata("externalPropertyAccessor.kt")
    public void testExternalPropertyAccessor() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/externalPropertyAccessor.kt");
    }

    @Test
    @TestMetadata("inheritance.kt")
    public void testInheritance() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/inheritance.kt");
    }

    @Test
    @TestMetadata("jsCode.kt")
    public void testJsCode() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/jsCode.kt");
    }

    @Test
    @TestMetadata("jsExport.kt")
    public void testJsExport() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/jsExport.kt");
    }

    @Test
    @TestMetadata("jsExportPromiseUnit.kt")
    public void testJsExportPromiseUnit() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/jsExportPromiseUnit.kt");
    }

    @Test
    @TestMetadata("jsFun.kt")
    public void testJsFun() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/jsFun.kt");
    }

    @Test
    @TestMetadata("nestedExternal.kt")
    public void testNestedExternal() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nestedExternal.kt");
    }

    @Test
    @TestMetadata("nonAbstractMembersOfInterface.kt")
    public void testNonAbstractMembersOfInterface() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nonAbstractMembersOfInterface.kt");
    }

    @Test
    @TestMetadata("wrongJsInteropTypes.kt")
    public void testWrongJsInteropTypes() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/wrongJsInteropTypes.kt");
    }

    @Test
    @TestMetadata("wrongQualifier.kt")
    public void testWrongQualifier() {
      runTest("compiler/testData/diagnostics/wasmTests/jsInterop/wrongQualifier.kt");
    }

    @Nested
    @TestMetadata("compiler/testData/diagnostics/wasmTests/jsInterop/module")
    @TestDataPath("$PROJECT_ROOT")
    public class Module {
      @Test
      public void testAllFilesPresentInModule() {
        KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/jsInterop/module"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
      }

      @Test
      @TestMetadata("jsModuleNonExternal.kt")
      public void testJsModuleNonExternal() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/module/jsModuleNonExternal.kt");
      }

      @Test
      @TestMetadata("jsVarProhibited.kt")
      public void testJsVarProhibited() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/module/jsVarProhibited.kt");
      }

      @Test
      @TestMetadata("nestedProhibited.kt")
      public void testNestedProhibited() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/module/nestedProhibited.kt");
      }

      @Test
      @TestMetadata("prohibitedOnNonNative.kt")
      public void testProhibitedOnNonNative() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/module/prohibitedOnNonNative.kt");
      }
    }

    @Nested
    @TestMetadata("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke")
    @TestDataPath("$PROJECT_ROOT")
    public class NativeInvoke {
      @Test
      public void testAllFilesPresentInNativeInvoke() {
        KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
      }

      @Test
      @TestMetadata("onLocalNonNativeClassMembers.kt")
      public void testOnLocalNonNativeClassMembers() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onLocalNonNativeClassMembers.kt");
      }

      @Test
      @TestMetadata("onLocalOtherDeclarations.kt")
      public void testOnLocalOtherDeclarations() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onLocalOtherDeclarations.kt");
      }

      @Test
      @TestMetadata("onNativeClassMembers.kt")
      public void testOnNativeClassMembers() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onNativeClassMembers.kt");
      }

      @Test
      @TestMetadata("onNestedDeclarationsInsideNativeClass.kt")
      public void testOnNestedDeclarationsInsideNativeClass() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onNestedDeclarationsInsideNativeClass.kt");
      }

      @Test
      @TestMetadata("onNestedDeclarationsInsideNonNativeClass.kt")
      public void testOnNestedDeclarationsInsideNonNativeClass() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onNestedDeclarationsInsideNonNativeClass.kt");
      }

      @Test
      @TestMetadata("onNonNativeClassMembers.kt")
      public void testOnNonNativeClassMembers() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onNonNativeClassMembers.kt");
      }

      @Test
      @TestMetadata("onTopLevelOtherDeclarations.kt")
      public void testOnTopLevelOtherDeclarations() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/nativeInvoke/onTopLevelOtherDeclarations.kt");
      }
    }

    @Nested
    @TestMetadata("compiler/testData/diagnostics/wasmTests/jsInterop/qualifier")
    @TestDataPath("$PROJECT_ROOT")
    public class Qualifier {
      @Test
      public void testAllFilesPresentInQualifier() {
        KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/jsInterop/qualifier"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
      }

      @Test
      @TestMetadata("jsQualifierNonExternal.kt")
      public void testJsQualifierNonExternal() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/qualifier/jsQualifierNonExternal.kt");
      }
    }

    @Nested
    @TestMetadata("compiler/testData/diagnostics/wasmTests/jsInterop/rtti")
    @TestDataPath("$PROJECT_ROOT")
    public class Rtti {
      @Test
      public void testAllFilesPresentInRtti() {
        KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/jsInterop/rtti"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
      }

      @Test
      @TestMetadata("castToNativeInterface.kt")
      public void testCastToNativeInterface() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/rtti/castToNativeInterface.kt");
      }

      @Test
      @TestMetadata("checkForNativeInterface.kt")
      public void testCheckForNativeInterface() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/rtti/checkForNativeInterface.kt");
      }

      @Test
      @TestMetadata("nativeInterfaceAsReifiedTypeArgument.kt")
      public void testNativeInterfaceAsReifiedTypeArgument() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/rtti/nativeInterfaceAsReifiedTypeArgument.kt");
      }

      @Test
      @TestMetadata("nativeInterfaceClassLiteral.kt")
      public void testNativeInterfaceClassLiteral() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/rtti/nativeInterfaceClassLiteral.kt");
      }

      @Test
      @TestMetadata("whenIsNativeInterface.kt")
      public void testWhenIsNativeInterface() {
        runTest("compiler/testData/diagnostics/wasmTests/jsInterop/rtti/whenIsNativeInterface.kt");
      }
    }
  }

  @Nested
  @TestMetadata("compiler/testData/diagnostics/wasmTests/multiplatform")
  @TestDataPath("$PROJECT_ROOT")
  public class Multiplatform {
    @Test
    @TestMetadata("ActualExternalTypeAsJsInteropType.kt")
    public void testActualExternalTypeAsJsInteropType() {
      runTest("compiler/testData/diagnostics/wasmTests/multiplatform/ActualExternalTypeAsJsInteropType.kt");
    }

    @Test
    public void testAllFilesPresentInMultiplatform() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/multiplatform"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
    }
  }

  @Nested
  @TestMetadata("compiler/testData/diagnostics/wasmTests/wasmInterop")
  @TestDataPath("$PROJECT_ROOT")
  public class WasmInterop {
    @Test
    public void testAllFilesPresentInWasmInterop() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/wasmTests/wasmInterop"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|partialBody|fir|ll|latestLV)\\.kts?$"), true);
    }

    @Test
    @TestMetadata("wasmExport.kt")
    public void testWasmExport() {
      runTest("compiler/testData/diagnostics/wasmTests/wasmInterop/wasmExport.kt");
    }

    @Test
    @TestMetadata("wasmImport.kt")
    public void testWasmImport() {
      runTest("compiler/testData/diagnostics/wasmTests/wasmInterop/wasmImport.kt");
    }
  }
}
